﻿#define _CRT_SECURE_NO_WARNINGS 1
#include"Date.h"
#if 0
class Stack
{
public:
	Stack(int capaccity = 4)
	{
		if (capaccity == 0)
		{
			//默认先开4个空间
			int* tmp = (int*)malloc(sizeof(int) * 4);
			if (nullptr == tmp)
			{
				perror("Stack(int capaccity = 4) malloc");
				return;
			}
			_a = tmp;
			_capacity = 4;
			_top = 0;//默认指向栈顶元素的下一个位置
		}
		else
		{
			int* tmp = (int*)malloc(sizeof(int) * capaccity);
			if (nullptr == tmp)
			{
				perror("Stack(int capaccity = 4) malloc");
				return;
			}
			_a = tmp;
			_capacity = capaccity;
			_top = 0;
		}
	}
	~Stack()
	{
		free(_a);
		_a = nullptr;
		_top = _capacity = 0;
	}

	Stack(const Stack& st)
	{
		//开空间
		//数据拷贝
		//空间释放
		//……
	}

	void operator=(const Stack& st)
	{
		cout << "operator=(const Stack& st)" << endl;//对于自定义类型成员，方便查看是否调用
	}
private:
	int* _a;
	int _top;
	int _capacity;
};
class MyQueue
{
private:
	Stack Popst;
	Stack Pushst;
};
void testSub()
{
	Date d1(2024, 8, 4);
	Date d2(1944, 4, 12);
	int day = d1 - d2;
	cout << day << endl;
}
int main()
{
	Date d1(2024, 8, 6);
	Date d2(2024, 8, 5);
	Date d3(2024, 8, 4);
	/*cout << (d1 > d2) << endl;
	testSub();*/
	cout << d1;
	cout << d2;
	d3 = d1 = d2;
	cout << d3;
	return 0;
}
#endif


//int main()
//{
//	Date d1(2024, 8, 1);
//	const Date d2(2024, 8, 4);
//	d1.Print();
//	d2.Print();
//	cout<<d1<<d2;
//
//	cin >> d1;
//	d1.Print();
//
//	//MyQueue mq;
//	//cout << mq << endl;
//	//
//	/*cout << (d1 < d2) << endl;
//	testSub();*/
//	return 0;
//}

//int main()
//{
//	//Date d1(2024, 8, 4);//调用构造函数
//	//d1.Print();
//	//Date ret = d1++;
//	//d1.Print();
//	//ret.Print();
//
//	//Date ret = d1--;
//	//d1.Print();
//	//ret.Print();
//	
//	/*Date ret = --d1;
//	d1.Print();
//	ret.Print();*/
//	//Date d2(d1);//调用拷贝构造
//	//d2.Print();
//
//	//Date d3(2024, 8, 3);
//	//d3 = d2;//进行浅拷贝
//	//d3.Print();
//	//cout << (d1 == d2) << endl;
//	//cout << (d1 > d3) << endl;
//	//Date ret = d1 += 50;
//	//ret.Print();
//	
//	//Date d1(2024, 8, 4);
//	//Date ret = (d1 -= 9000);
//	//ret.Print();
//
//	//MyQueue mq1;
//	//MyQueue mq2;
//	//mq2 = mq1;//进行赋值操作
//	//testSub();
//	return 0;
//}
///*
//函数名字为：关键字operator后面接需要重载的运算符符号。
//
//函数原型：返回值类型 operator操作符(参数列表)
//
//注意：
//
//不能通过连接其他符号来创建新的操作符：比如operator@
//
//重载操作符必须有一个类类型参数
//
//用于内置类型的运算符，其含义不能改变，例如：内置的整型+，不 能改变其含义
//
//作为类成员函数重载时，其形参看起来比操作数数目少1，因为成员函数的第一个参数为隐藏的this
//
//.*   ::   sizeof   ?:   . 注意以上5个运算符不能重载。这个经常在笔试选择题中出现。
//
//*/

int main()
{
	Date d1(2021,4,12);
	Date d2(2021,4,22);
	/*cin >> d1;
	cin >> d2;*/
	int ret = d1 - d2;
	if (ret == 1)
		return 2;
	cout<< ret<<endl;
	return 0;
}